WRITE(2) | п═я┐п╨п╬п╡п╬п╢я│я┌п╡п╬ п©я─п╬пЁя─п╟п╪п╪п╦я│я┌п╟ Linux | WRITE(2) |
п≤п°п╞¶
write - п╥п╟п©п╦я│я▄ п╡ я└п╟п╧п╩п╬п╡я▀п╧ п╢п╣я│п╨я─п╦п©я┌п╬я─
п·п▒п≈п·п═¶
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
п·п÷п≤п║п░п²п≤п∙¶
write() п©п╦я┬п╣я┌ п╢п╬ count п╠п╟п╧я┌ п╦п╥ п╠я┐я└п╣я─п╟, п╫п╟ п╨п╬я┌п╬я─я▀п╧ я┐п╨п╟п╥я▀п╡п╟п╣я┌ buf, п╡ я└п╟п╧п╩п╣, п╫п╟ п╨п╬я┌п╬я─я▀п╧ я│я│я▀п╩п╟п╣я┌я│я▐ я└п╟п╧п╩п╬п╡я▀п╧ п╢п╣я│п╨я─п╦п©я┌п╬я─ fd.
п п╬п╩п╦я┤п╣я│я┌п╡п╬ п╥п╟п©п╦я│п╟п╫п╫я▀я┘ п╠п╟п╧я┌ п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п╪п╣п╫я▄я┬п╣ я┤п╣п╪ count п╣я│п╩п╦, п╫п╟п©я─п╦п╪п╣я─, п╫п╣п╢п╬я│я┌п╟я┌п╬я┤п╫п╬ п╪п╣я│я┌п╟ п╫п╟ я└п╦п╥п╦я┤п╣я│п╨п╬п╪ п╫п╬я│п╦я┌п╣п╩п╣, п╦п╩п╦ п╦я│я┤п╣я─п©п╟п╫ п╬я┌п╡п╣п╢я▒п╫п╫я▀п╧ п╩п╦п╪п╦я┌ я─п╣я│я┐я─я│п╟ RLIMIT_FSIZE (я│п╪. setrlimit(2)), п╦п╩п╦ п╡я▀п╥п╬п╡ п╠я▀п╩ п©я─п╣я─п╡п╟п╫ п╬п╠я─п╟п╠п╬я┌я┤п╦п╨п╬п╪ я│п╦пЁп╫п╟п╩п╬п╡ п©п╬я│п╩п╣ я┐п╤п╣ п╥п╟п©п╦я│п╟п╫п╫я▀я┘ п╪п╣п╫я▄я┬п╣ я┤п╣п╪ count п╠п╟п╧я┌. (п║п╪. я┌п╟п╨п╤п╣ pipe(7).)
п▓ я│п╩я┐я┤п╟п╣ я│ я└п╟п╧п╩п╟п╪п╦, я─п╟п╥я─п╣я┬п╟я▌я┴п╦п╪п╦ п©п╬п╥п╦я├п╦п╬п╫п╦я─п╬п╡п╟п╫п╦п╣ (я┌.п╣., п╨ п╨п╬я┌п╬я─я▀п╪ п╪п╬п╤п╫п╬ п©я─п╦п╪п╣п╫п╦я┌я▄ lseek(2), п╫п╟п©я─п╦п╪п╣я─, п╬п╠я▀я┤п╫я▀п╣ я└п╟п╧п╩я▀), п╥п╟п©п╦я│я▄ п©я─п╬п╦п╥п╡п╬п╢п╦я┌я│я▐ п©п╬ я┌п╣п╨я┐я┴п╣п╪я┐ я└п╟п╧п╩п╬п╡п╬п╪я┐ я│п╪п╣я┴п╣п╫п╦я▌, п╟ я│п╪п╣я┴п╣п╫п╦п╣ я└п╟п╧п╩п╟ я┐п╡п╣п╩п╦я┤п╦п╡п╟п╣я┌я│я▐ п╫п╟ я─п╣п╟п╩я▄п╫п╬п╣ я┤п╦я│п╩п╬ п╥п╟п©п╦я│п╟п╫п╫я▀я┘ п╠п╟п╧я┌. п∙я│п╩п╦ я└п╟п╧п╩ п╠я▀п╩ п╬я┌п╨я─я▀я┌ я│ п©п╬п╪п╬я┴я▄я▌ open(2) я│ п╟я─пЁя┐п╪п╣п╫я┌п╬п╪ O_APPEND, я┌п╬ п©п╣я─п╣п╢ п╥п╟п©п╦я│я▄я▌ я└п╟п╧п╩п╬п╡п╬п╣ я│п╪п╣я┴п╣п╫п╦п╣ я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌я│я▐ п╡ п╨п╬п╫п╣я├ я└п╟п╧п╩п╟. п║п╬пЁп╩п╟я│п╬п╡п╟п╫п╦п╣ я└п╟п╧п╩п╬п╡п╬пЁп╬ я│п╪п╣я┴п╣п╫п╦я▐ п╦ п╬п©п╣я─п╟я├п╦п╦ п╥п╟п©п╦я│п╦ п╡я▀п©п╬п╩п╫я▐я▌я┌я│я▐ п╟я┌п╬п╪п╟я─п╫п╬.
п÷п╬ POSIX я┌я─п╣п╠я┐п╣я┌я│я▐, я┤я┌п╬п╠я▀ read(2), п╨п╬я┌п╬я─я▀п╧ п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п╡я▀п╥п╡п╟п╫ я│я─п╟п╥я┐ п©п╬я│п╩п╣ write(), п╡п╬п╥п╡я─п╟я┌п╦п╩ п╫п╬п╡я▀п╣ п╢п╟п╫п╫я▀п╣. п≈п╟п╪п╣я┌п╦п╪, я┤я┌п╬ п╫п╣ п╡я│п╣ я└п╟п╧п╩п╬п╡я▀п╣ я│п╦я│я┌п╣п╪я▀ я│п╬п╬я┌п╡п╣я┌я│я┌п╡я┐я▌я┌ я│я┌п╟п╫п╢п╟я─я┌я┐ POSIX.
п▓п·п≈п▓п═п░п╘п░п∙п°п·п∙ п≈п²п░п╖п∙п²п≤п∙¶
п▓ я│п╩я┐я┤п╟п╣ я┐я│п©п╣я┘п╟, п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ п╨п╬п╩п╦я┤п╣я│я┌п╡п╬ п╥п╟п©п╦я│п╟п╫п╫я▀я┘ п╠п╟п╧я┌ (п╫п╬п╩я▄ пЁп╬п╡п╬я─п╦я┌ п╬ я┌п╬п╪, я┤я┌п╬ п╫п╦я┤п╣пЁп╬ п╥п╟п©п╦я│п╟п╫п╬ п╫п╣ п╠я▀п╩п╬). п▓ я│п╩я┐я┤п╟п╣ п╬я┬п╦п╠п╨п╦, п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ -1 п╦ п╥п╫п╟я┤п╣п╫п╦п╣ errno я┐я│я┌п╟п╫п╟п╡п╩п╦п╡п╟п╣я┌я│я▐ я│п╬п╬я┌п╡п╣я┌я│я┌п╡я┐я▌я┴п╦п╪ п╬п╠я─п╟п╥п╬п╪.
п∙я│п╩п╦ count я─п╟п╡п╣п╫ п╫я┐п╩я▌ п╦ fd я┐п╨п╟п╥я▀п╡п╟п╣я┌ п╫п╟ п╬п╠я▀я┤п╫я▀п╧ я└п╟п╧п╩, я┌п╬ write() п╪п╬п╤п╣я┌ п╡п╣я─п╫я┐я┌я▄ п╬я┬п╦п╠п╨я┐, п╣я│п╩п╦ п╬п╠п╫п╟я─я┐п╤п╣п╫п╟ п╬п╢п╫п╟ п╦п╥ п©п╣я─п╣я┤п╦я│п╩п╣п╫п╫я▀я┘ п╫п╦п╤п╣ п╬я┬п╦п╠п╬п╨. п∙я│п╩п╦ п╬я┬п╦п╠п╬п╨ п╫п╣ п╬п╠п╫п╟я─я┐п╤п╣п╫п╬, я┌п╬ п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ 0 п╠п╣п╥ п╨п╟п╨п╦я┘-п╩п╦п╠п╬ п╢я─я┐пЁп╦я┘ п©п╬я│п╩п╣п╢я│я┌п╡п╦п╧. п∙я│п╩п╦ count я─п╟п╡п╣п╫ п╫я┐п╩я▌ п╦ fd я┐п╨п╟п╥я▀п╡п╟п╣я┌ п╫п╟ п╬я┌п╩п╦я┤п╫я▀п╧ п╬я┌ п╬п╠я▀я┤п╫п╬пЁп╬ я└п╟п╧п╩, я┌п╬ я─п╣п╥я┐п╩я▄я┌п╟я┌ п╫п╣ п╬п©я─п╣п╢п╣п╩я▒п╫.
п·п╗п≤п▒п п≤¶
- EAGAIN
- п╓п╟п╧п╩п╬п╡я▀п╧ п╢п╣я│п╨я─п╦п©я┌п╬я─ fd я┐п╨п╟п╥я▀п╡п╟п╣я┌ п╫п╟ я└п╟п╧п╩, п╫п╣ я▐п╡п╩я▐я▌я┴п╦п╧я│я▐ я│п╬п╨п╣я┌п╬п╪ п╦ п©п╬п╪п╣я┤п╣п╫п╫я▀п╧ п╨п╟п╨ п╫п╣п╠п╩п╬п╨п╦я─я┐я▌я┴п╦п╧ п╡п╡п╬п╢/п╡я▀п╡п╬п╢ (O_NONBLOCK), п╟ п╥п╟п©п╦я│я▄ п╡я▀п╥п╬п╡п╣я┌ п╠п╩п╬п╨п╦я─п╬п╡п╨я┐.
- EAGAIN п╦п╩п╦ EWOULDBLOCK
- п╓п╟п╧п╩п╬п╡я▀п╧ п╢п╣я│п╨я─п╦п©я┌п╬я─ fd я┐п╨п╟п╥я▀п╡п╟п╣я┌ п╫п╟ я│п╬п╨п╣я┌, п╨п╬я┌п╬я─я▀п╧ п©п╬п╪п╣я┤п╣п╫ п╨п╟п╨ п╫п╣п╠п╩п╬п╨п╦я─я┐я▌я┴п╦п╧ п╡п╡п╬п╢/п╡я▀п╡п╬п╢ (O_NONBLOCK), п╟ п╥п╟п©п╦я│я▄ п╡я▀п╥п╬п╡п╣я┌ п╠п╩п╬п╨п╦я─п╬п╡п╨я┐. п÷п╬ POSIX.1-2001 я─п╟п╥я─п╣я┬п╣п╫п╬ п╡п╬п╥п╡я─п╟я┴п╟я┌я▄ п╬я┬п╦п╠п╨я┐ п╡ п╬п╠п╬п╦я┘ я│п╩я┐я┤п╟я▐ п╦ п╫п╣ я┌я─п╣п╠я┐п╣я┌я│я▐, я┤я┌п╬п╠я▀ я█я┌п╦ п╨п╬п╫я│я┌п╟п╫я┌я▀ п╦п╪п╣п╩п╦ п╬п╢п╫п╬ п╥п╫п╟я┤п╣п╫п╦п╣, п©п╬я█я┌п╬п╪я┐ п©п╣я─п╣п╫п╬я│п╦п╪я▀п╣ п©я─п╦п╩п╬п╤п╣п╫п╦я▐ п╢п╬п╩п╤п╫я▀ п©я─п╬п╡п╣я─я▐я┌я▄ п╬п╠п╣ п©я─п╦я┤п╦п╫я▀.
- EBADF
- fd п╫п╣ я▐п╡п╩я▐п╣я┌я│я▐ п©я─п╟п╡п╦п╩я▄п╫я▀п╪ я└п╟п╧п╩п╬п╡я▀п╪ п╢п╣я│п╨я─п╦п©я┌п╬я─п╬п╪ п╦п╩п╦ п╫п╣ п╬я┌п╨я─я▀я┌ п╢п╩я▐ п╥п╟п©п╦я│п╦.
- EFAULT
- buf п╫п╟я┘п╬п╢п╦я┌я│я▐ п╥п╟ п©я─п╣п╢п╣п╩п╟п╪п╦ п╢п╬я│я┌я┐п©п╫п╬пЁп╬ п╡п╟п╪ п╟п╢я─п╣я│п╫п╬пЁп╬ п©я─п╬я│я┌я─п╟п╫я│я┌п╡п╟.
- EFBIG
- п÷п╬п©я▀я┌п╨п╟ п╥п╟п©п╦я│п╟я┌я▄ п╡ я└п╟п╧п╩, п╨п╬я┌п╬я─я▀п╧ п©я─п╣п╡я▀я┬п╟п╣я┌ п╥п╟п╢п╟п╫п╫п╬п╣ п©я─п╦ я─п╣п╟п╩п╦п╥п╟я├п╦п╦ п╬пЁя─п╟п╫п╦я┤п╣п╫п╦п╣ п╫п╟ я─п╟п╥п╪п╣я─ я└п╟п╧п╩п╟ п╦п╩п╦ п╬пЁя─п╟п╫п╦я┤п╣п╫п╦п╣ п╫п╟ я─п╟п╥п╪п╣я─ я└п╟п╧п╩п╟ п╢п╩я▐ я┌п╣п╨я┐я┴п╣пЁп╬ п©я─п╬я├п╣я│я│п╟, п╦п╩п╦ п╥п╟п©п╦я│я▄ п╡ п©п╬п╥п╦я├п╦я▌ п©п╬я│п╩п╣ п╪п╟п╨я│п╦п╪п╟п╩я▄п╫п╬ я─п╟п╥я─п╣я┬я▒п╫п╫п╬пЁп╬ я│п╪п╣я┴п╣п╫п╦я▐.
- EINTR
- п╜я┌п╬я┌ п╡я▀п╥п╬п╡ п╠я▀п╩ п©я─п╣я─п╡п╟п╫ я│п╦пЁп╫п╟п╩п╬п╪, п©п╣я─п╣п╢ я┌п╣п╪ п╨п╟п╨ п╠я▀п╩п╦ п╥п╟п©п╦я│п╟п╫я▀ п╨п╟п╨п╦п╣-п╩п╦п╠п╬ п╢п╟п╫п╫я▀п╣; я│п╪ signal(7).
- EINVAL
- fd п©я─п╦я│п╬п╣п╢п╦п╫я▒п╫ п╨ п╬п╠я┼п╣п╨я┌я┐, п╨п╬я┌п╬я─я▀п╧ п╫п╣ п©п╬п╢я┘п╬п╢п╦я┌ п╢п╩я▐ п╥п╟п©п╦я│п╦; п╦п╩п╦ я└п╟п╧п╩ п╠я▀п╩ п╬я┌п╨я─я▀я┌ я│ я┐п╨п╟п╥п╟п╫п╦п╣п╪ я└п╩п╟пЁп╟ O_DIRECT, п╦п╩п╦ п╫п╣п©я─п╟п╡п╦п╩я▄п╫п╬ п╡я▀я─п╟п╡п╫п╣п╫п╬ п╟п╢я─п╣я│ п╡ buf, п╥п╫п╟я┤п╣п╫п╦п╣ count п╦п╩п╦ я┌п╣п╨я┐я┴п╣п╣ я└п╟п╧п╩п╬п╡п╬п╣ я│п╪п╣я┴п╣п╫п╦п╣.
- EIO
- п▓п╬ п╡я─п╣п╪я▐ п╦п╥п╪п╣п╫п╣п╫п╦я▐ п╦п╫п╢п╣п╨я│п╫п╬пЁп╬ п╢п╣я│п╨я─п╦п©я┌п╬я─п╟ (inode) п╡п╬п╥п╫п╦п╨п╩п╟ п╫п╦п╥п╨п╬я┐я─п╬п╡п╫п╣п╡п╟я▐ п╬я┬п╦п╠п╨п╟ п╡п╡п╬п╢п╟/п╡я▀п╡п╬п╢п╟.
- ENOSPC
- п²п╟ я┐я│я┌я─п╬п╧я│я┌п╡п╣, я│п╬п╢п╣я─п╤п╟я┴п╣п╪ я└п╟п╧п╩, п╫п╟ п╨п╬я┌п╬я─я▀п╧ я│я│я▀п╩п╟п╣я┌я│я▐ fd, п╫п╣я┌ я│п╡п╬п╠п╬п╢п╫п╬пЁп╬ п╪п╣я│я┌п╟.
- EPIPE
- fd я│я│я▀п╩п╟п╣я┌я│я▐ п╫п╟ п╨п╬п╫п╡п╣п╧п╣я─ п╦п╩п╦ я│п╬п╨п╣я┌, я┐ п╨п╬я┌п╬я─п╬пЁп╬ п╥п╟п╨я─я▀я┌п╬ я┤я┌п╣п╫п╦п╣. п п╬пЁп╢п╟ я┌п╟п╨п╬п╣ я│п╩я┐я┤п╟п╣я┌я│я▐, п©п╦я┬я┐я┴п╦п╧ п©я─п╬я├п╣я│я│ я┌п╟п╨п╤п╣ п©п╬п╩я┐я┤п╦я┌ я│п╦пЁп╫п╟п╩ SIGPIPE. (п╒п╟п╨п╦п╪ п╬п╠я─п╟п╥п╬п╪, п╡п╬п╥п╡я─п╟я┴п╟п╣п╪п╬п╣ п╥п╫п╟я┤п╣п╫п╦п╣ п╪п╬п╤п╫п╬ п╠я┐п╢п╣я┌ я┐п╡п╦п╢п╣я┌я▄ я┌п╬п╩я▄п╨п╬ п╣я│п╩п╦ п©я─п╬пЁя─п╟п╪п╪п╟ п©п╣я─п╣я┘п╡п╟я┌я▀п╡п╟п╣я┌, п╠п╩п╬п╨п╦я─я┐п╣я┌ п╦п╩п╦ п╦пЁп╫п╬я─п╦я─я┐п╣я┌ я█я┌п╬я┌ я│п╦пЁп╫п╟п╩.)
п▓ п╥п╟п╡п╦я│п╦п╪п╬я│я┌п╦ п╬я┌ п╬п╠я┼п╣п╨я┌п╟, п╫п╟ п╨п╬я┌п╬я─я▀п╧ я┐п╨п╟п╥я▀п╡п╟п╣я┌ fd, п╪п╬пЁя┐я┌ п©я─п╬п╦я│я┘п╬п╢п╦я┌я▄ п╦ п╢я─я┐пЁп╦п╣ п╬я┬п╦п╠п╨п╦.
п║п·п·п╒п▓п∙п╒п║п╒п▓п≤п∙ п║п╒п░п²п■п░п═п╒п░п°¶
SVr4, 4.3BSD, POSIX.1-2001.
п║п╬пЁп╩п╟я│п╫п╬ SVr4, п╥п╟п©п╦я│я▄ п╪п╬п╤п╣я┌ п╠я▀я┌я▄ п©я─п╣я─п╡п╟п╫п╟ п╡ п╩я▌п╠п╬п╪ п╪п╣я│я┌п╣ (я│ п╡п╬п╥п╡я─п╟я┌п╬п╪ EINTR), п╟ п╫п╣ я┌п╬п╩я▄п╨п╬ п©п╣я─п╣п╢ я┌п╣п╪ п╨п╟п╨ п╠я┐п╢я┐я┌ п╥п╟п©п╦я│п╟п╫я▀ п╨п╟п╨п╦п╣-п╩п╦п╠п╬ п╢п╟п╫п╫я▀п╣.
п≈п░п°п∙п╖п░п²п≤п╞¶
пёя│п©п╣я┬п╫я▀п╧ п╡п╬п╥п╡я─п╟я┌ п╦п╥ п╡я▀п╥п╬п╡п╟ write() п╫п╣ п╢п╟я▒я┌ п╫п╦п╨п╟п╨п╦я┘ пЁп╟я─п╟п╫я┌п╦п╧, я┤я┌п╬ п╢п╟п╫п╫я▀п╣ я│п╬я┘я─п╟п╫п╣п╫я▀ п╫п╟ п╢п╦я│п╨п╣. п╓п╟п╨я┌п╦я┤п╣я│п╨п╦, п╡ п╫п╣п╨п╬я┌п╬я─я▀я┘ п╬я┬п╦п╠п╬я┤п╫я▀я┘ я─п╣п╟п╩п╦п╥п╟я├п╦я▐я┘ п╢п╟п╤п╣ п╫п╣я┌ пЁп╟я─п╟п╫я┌п╦п╦, я┤я┌п╬ п╢п╩я▐ п╢п╟п╫п╫я▀я┘ п╠я▀п╩п╬ п╥п╟я─п╣п╥п╣я─п╡п╦я─п╬п╡п╟п╫п╬ п╪п╣я│я┌п╬. п∙п╢п╦п╫я│я┌п╡п╣п╫п╫я▀п╧ я│п©п╬я│п╬п╠ п©п╬п╩я┐я┤п╦я┌я▄ пЁп╟я─п╟п╫я┌п╦я─п╬п╡п╟п╫п╫я┐я▌ п╥п╟п©п╦я│я▄ — п╡я▀п╥п╡п╟я┌я▄ fsync(2) п©п╬я│п╩п╣ п╥п╟п©п╦я│п╦ п╡я│п╣я┘ п╢п╟п╫п╫я▀я┘.
п∙я│п╩п╦ write() п©я─п╣я─п╡п╟п╫ п╬п╠я─п╟п╠п╬я┌я┤п╦п╨п╬п╪ я│п╦пЁп╫п╟п╩п╬п╡ п╢п╬ п╫п╟я┤п╟п╩п╟ п╥п╟п©п╦я│п╦, я┌п╬ п╡я▀п╥п╬п╡ п╡п╬п╥п╡я─п╟я┴п╟п╣я┌ п╬я┬п╦п╠п╨я┐ EINTR; п╣я│п╩п╦ п╬п╫ п©я─п╣я─п╡п╟п╫ п©п╬я│п╩п╣ п╫п╟я┤п╟п╩п╟ п╥п╟п©п╦я│п╦, я┌п╬ п╡я▀п╥п╬п╡ я│я┤п╦я┌п╟п╣я┌я│я▐ я┐я│п©п╣я┬п╫я▀п╪, п╦ п╡п╬п╥п╡я─п╟я┴п╟п╣я┌я│я▐ я┤п╦я│п╩п╬ п╥п╟п©п╦я│п╟п╫п╫я▀я┘ п╠п╟п╧я┌.
п║п°п·п╒п═п≤п╒п∙ п╒п░п п√п∙¶
close(2), fcntl(2), fsync(2), ioctl(2), lseek(2), open(2), pwrite(2), read(2), select(2), writev(2), fwrite(3)
2009-02-23 | Linux |